home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / ms_dos / renum / renum.pas < prev   
Pascal/Delphi Source File  |  1993-11-30  |  5KB  |  174 lines

  1. {
  2.         Basic renumber for Towns(DOS machine )
  3.           386Basic ノ カエナイ(カワナイヒト) ニ ササゲマス
  4.  
  5.         1993/08/07  by TMA
  6.  
  7.         Usage  A>RENUM infile.bas [line-no.]
  8.  
  9.         language: Turbo-Pascal ver 6.0
  10.         machine : Dos machine
  11.  
  12.         1 ニュウリョク ファイル (ASCII-saved)  ヲ ヨム
  13.         2 1ギョウ ズツ セントウガ スウジ ナラ リナンバ
  14.         3 セントウ ニ スウジ ガナイト ナンバ ヲ フカスル
  15.         4 temp ファイル ニ シュツリョク スル
  16.         5 セイジョウ シュウリョウ スルト *.org ヲ サクジョ
  17.         6 ニュウリョク ファイルメイ ヲ *.org ニ リネーム
  18.         7 temp ヲ ニュウリョク ファイルメイ ニ  リメーム
  19.                                                                 }
  20. uses DOS;
  21.  
  22. type
  23.   str255 = string[255];
  24. const
  25.   start_no  = 990;                        { キテイチ ハ 1000ギョウ カラ }
  26. var
  27.   infnam  : str255;
  28.   temp_fnam : string[50];
  29.   inf,otf : text;
  30.   ior     : integer;
  31.   inrec   : str255;
  32.   lno     : integer;
  33.   lcnt    : integer;
  34.   d       : Dirstr;                   { ファイメイ ブンカイ ヨウ }
  35.   n       : Namestr;
  36.   e       : extstr;
  37.  
  38. function with_lineno(msg:str255):boolean; { ギョウバンゴウ アリ ノ トキ true }
  39.   begin
  40.     if msg[1] in ['0'..'9']
  41.       then with_lineno := true
  42.       else with_lineno := false;
  43.   end;
  44.  
  45. function startp(msg:str255):integer;    { BASIC ホンブン カイシイチ ハハッケン }
  46.   var  p : integer;
  47.   begin
  48.     p := 0;
  49.     repeat
  50.       inc(p);
  51.     until not(msg[p] in['0'..'9']);     { サイショ ノ not NUMERIC マデ loop }
  52.     startp := p;
  53.   end;
  54.  
  55. procedure renum(msg:str255);            { RENUM ホンタイ }
  56.   var p : integer;                      { チャクモク イチ }
  57.   begin
  58.     lno := lno + 10;                    { ギョウバンゴウ ++ }
  59.     if length(msg) = 0 then begin       { クウ ギョウ ハ REM ニ }
  60.       writeln(otf,lno:4,' ',#$27);
  61.       exit;
  62.     end;
  63.  
  64.     if with_lineno(msg) then begin
  65.        write(otf,lno:4);                { ギョウバンゴウ ツキ ノ ショリ }
  66.        writeln(otf,copy(msg,startp(msg),255));
  67.      end
  68.      else
  69.        writeln(otf,lno:4,' ',msg);      { ギョウバンゴウ ナシ ショリ }
  70.   end;
  71.  
  72. procedure open_files;                   { OPEN files }
  73.   begin
  74.     assign(inf,infnam);                 { ニュウリョク file open }
  75.     {$i-} reset(inf); {$i+}
  76.     ior :=ioresult;
  77.     if ior <> 0  then begin
  78.       writeln('IN-File open error Code:',ior);
  79.       writeln('Program Aborted');
  80.       HAlt;
  81.     end;
  82.  
  83.     assign(otf,d+temp_fnam);              { TEMP   file open }
  84.     {$i-} rewrite(otf); {$i+}
  85.     ior :=ioresult;
  86.     if ior <> 0  then begin
  87.       writeln('TEMP-File open error Code:',ior);
  88.       writeln('Program Aborted');
  89.       close(inf);
  90.       HAlt;
  91.     end;
  92.   end;
  93.  
  94. procedure make_temp;
  95.   begin
  96.     open_files;                         { OPEN files }
  97.     while not eof(inf) do begin
  98.       readln(inf,inrec);
  99.       renum(inrec);
  100.       inc(lcnt);
  101.     end;
  102.     close(inf);
  103.     close(otf);
  104.   end;
  105.  
  106. procedure   copy_master;                { master:rename, temp->master }
  107.   var wfnam : string[50];
  108.       tf    : file;                     {  temp file }
  109.      i,j    : integer;
  110.   begin
  111.     wfnam := d + n + '.org';            { ゼンカイ ノ .org ファイル ノ サクジョ }
  112.     assign(tf,wfnam);
  113.     {$i-} erase(tf); {$i+}              { error ハ ムシ }
  114.  
  115.     assign(tf,infnam);
  116.     {$i-} rename(tf,wfnam); {$i+}       { ニュウリョク.bas -> *.org }
  117.     ior :=ioresult;
  118.     if not(ior in [0,2]) then begin     { マニュアル ニハ 0ヲ カエスト アルガ..?? }
  119.       writeln('1 ERROR Rename File ',infnam,'->',wfnam,' Code:',ior);
  120.       writeln('Program Aborted');
  121.       HAlt;
  122.     end;
  123.  
  124.     assign(tf,temp_fnam);
  125.     {$i-} rename(tf,infnam); {$i+}     { temp -> ニュウリョク.bas }
  126.     ior :=ioresult;
  127.     if not(ior in [0,2]) then begin
  128.       writeln('2 ERROR Rename File ',temp_fnam,'->',infnam,' Code:',ior);
  129.       writeln('Original Source is renamed to ',wfnam);
  130.       writeln('Exchanged file name is :',temp_fnam);
  131.       writeln('Program Aborted');
  132.       HAlt;
  133.     end;
  134.   end;
  135.  
  136. procedure get_param;
  137.   var i,j    : integer;
  138.   begin
  139.     writeln('***** BASIC RENUM *******');
  140.     if paramcount < 1 then begin
  141.       writeln('  Usage A>RENUM infile.bas [start-lineno.]');
  142.       writeln('  make backup file to infile.org');
  143.       writeln('  target LINENO. is line head NUMELICS only ');
  144.       writeln('  [start lineno] is useless option. if designation then start +10');
  145.       halt;
  146.     end;
  147.     infnam := paramstr(1);
  148.     writeln('Select filename :',infnam);
  149.  
  150.     lno := 0;
  151.     if paramcount > 1 then begin
  152.       val(paramstr(2),i,j);
  153.       if j = 0 then
  154.         lno := i;
  155.     end;
  156.     if lno = 0
  157.       then lno := start_no;
  158.     writeln('Start Lineno    :',lno+10);
  159.     fsplit(infnam,d,n,e);               { ファイルメイ ブンカイ }
  160.     temp_fnam := d + ')TEMP(.$$$';      { ニュウリョク ファイル ノ アルトコニ サクセイ }
  161.   end;
  162.  
  163. {----------------- MAIN -------------------- }
  164.  
  165. begin
  166.   get_param;                                { コマンドライン シュトク }
  167.  
  168.   lcnt := 0;                            { ギョウスウ }
  169.   make_temp;                            { chane to Temp file }
  170.   copy_master;                          { master:rename, temp->master }
  171.   writeln  ('read lines      :',lcnt);
  172.   writeln  ('Completed');
  173. end.
  174.